package com.hfb.mashibing.alip8.juc.c020;


import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CyclicBarrier;

/**
 * CyclicBarrier-栅栏:(等待一定数量后，一起执行)
 *          满足一定数量后开始执行回调函数后，程序继续向下执行
 *          满足前，都在等待
 *
 *
 * 扩展：GuavaRateLimiter
 */

public class T07_TestCyclicBarrier {

    public static void main(String[] args) {
        // 满20个人执行参数二
        CyclicBarrier barrier = new CyclicBarrier(20,
                ()->System.out.println("满人，发车!!!"));
        for (int i = 0; i < 100; i++) {
            new Thread(()->{
                try {
                    barrier.await();
                } catch (InterruptedException | BrokenBarrierException e) {
                    e.printStackTrace();
                }
            }).start();
        }
    }

}
